package hanshi_interface;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/**
 * @author ChenYongHao
 * @date 2023/5/4 9:15
 * @desc 函数式接口作为方法的返回值
 */
public class interface_return {
    public static void main(String[] args) {
        ArrayList<String> array1 = new ArrayList<String>();
        array1.add("cccc");
        array1.add("aaa");
        array1.add("bb");
        array1.add("d");
        System.out.println("排序前：" + array1);
        Collections.sort(array1, getComparator1());
        System.out.println("排序后：" + array1);

        ArrayList<String> array2 = new ArrayList<String>();
        array2.add("cccc");
        array2.add("aaa");
        array2.add("bb");
        array2.add("d");
        System.out.println("排序前：" + array2);
        Collections.sort(array2, getComparator2());
        System.out.println("排序后：" + array2);
    }

    // 匿名内部类的方式实现
    private static Comparator<String> getComparator1() {
        return new Comparator<String>() {
            @Override
            public int compare(String s1, String s2) {
                return s1.length() - s2.length();
            }
        };
    }

    // Lambda表达式方式实现
    private static Comparator<String> getComparator2() {
        return (s1, s2) -> s1.length() - s2.length();
    }
}
